Skip to content

ENG-3098: PBAC management UI — data purposes, consumers, query log config#7700

Merged
galvana merged 44 commits intomainfrom
feat/pbac-ui-management
Mar 25, 2026
Merged

ENG-3098: PBAC management UI — data purposes, consumers, query log config#7700
galvana merged 44 commits intomainfrom
feat/pbac-ui-management

Conversation

@galvana
Copy link
Contributor

@galvana galvana commented Mar 19, 2026

Ticket ENG-3098

Dependency: Requires fidesplus#3247 for the backend PBAC API endpoints

Description Of Changes

Add the admin UI for managing purpose-based access control (PBAC) entities. Three feature areas:

Data purposes management (/data-purposes)

  • List page with Ant Table, search, pagination
  • Add/edit pages using Ant Design v5 Form (Form.useForm, Form.Item)
  • Form mirrors privacy declaration fields: data use (taxonomy select), data categories, data subjects, legal basis, retention period, special category legal basis, features
  • Delete confirmation modal with scope-based access control

Data consumers management (/data-consumers)

  • List page with Ant Table, search, pagination
  • Add/edit pages with purpose assignment via multi-select
  • Consumer types: service, application, group, user
  • Delete confirmation modal with scope-based access control

Query log config (integration detail tab)

  • Settings toggle panel (not CRUD table) — enable/disable with poll interval
  • Inline Test connection and Poll now action buttons
  • Registered for BigQuery and test_datastore (mock) integration types
  • test_datastore connections always pass connection test (no secrets needed)

All pages gated behind alphaPurposeBasedAccessControl feature flag and requiresPlus.

Code Changes

  • features/data-purposes/ — 8 files: RTK slice, table, form, delete modal, actions cell, constants, barrel
  • features/data-consumers/ — 8 files: RTK slice, table, form, delete modal, actions cell, constants, barrel
  • features/integrations/configure-query-log/ — 6 files: RTK slice, tab, table hook, modal, actions cell, constants
  • pages/data-purposes/ — 3 pages: list, add, edit
  • pages/data-consumers/ — 3 pages: list, add, edit
  • features/common/nav/routes.ts — 8 new route constants
  • features/common/nav/nav-config.tsx — 2 nav items under Core Configuration
  • features/common/api.slice.ts — 3 cache tags
  • types/api/models/ScopeRegistryEnum.ts — 12 scope enums
  • types/api/models/IntegrationFeature.ts — QUERY_LOGGING enum
  • features/integrations/add-integration/allIntegrationTypes.tsx — test_datastore type info
  • features/integrations/integration-type-info/bigqueryInfo.tsx — QUERY_LOGGING feature
  • features/integrations/hooks/useFeatureBasedTabs.tsx — Query logging tab
  • src/fides/service/connection/connection_service.py — test types always pass connection test

Steps to Confirm

  1. Start dev: nox -s "dev(slim)" -- fides-pkg fides-admin-ui
  2. Enable alphaPurposeBasedAccessControl feature flag
  3. Navigate to Core Configuration > Data purposes — create, edit, delete a purpose
  4. Navigate to Core Configuration > Data consumers — create with purpose assignment, edit, delete
  5. Navigate to Integrations > create a test_datastore integration > Query logging tab > enable, test, poll
  6. Confirm lint/typecheck: cd clients/admin-ui && npm run lint && npm run typecheck

Pre-Merge Checklist

  • All CI Pipelines Succeeded
  • New features have been verified on (and/or added to) Demo Environment using nox -s dev -- demo
  • Documentation:
    • if there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
  • Issue Requirements are Met
  • Optional: Follow-Up Issues Created
  • Update CHANGELOG.md

Adrian Galvan and others added 5 commits March 16, 2026 16:46
Update fideslang dependency to use the feat/add-data-purposes-to-dataset-models
branch which adds data_purposes at dataset, collection, field, and sub-field
levels.

Dependency: ethyca/fideslang#39

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rect-reference error

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add admin UI for managing purpose-based access control (PBAC) entities:

Data purposes & data consumers management pages:
- List pages with Ant Table, search, pagination under Core Configuration
- Add/edit pages using Ant Design v5 Form (Form.useForm, Form.Item)
- Data purpose form mirrors privacy declaration fields (data use, categories,
  subjects, legal basis, retention, special category, features)
- Data consumer form includes purpose assignment via multi-select
- Delete confirmation modals with scope-based access control
- RTK Query slices with cache invalidation (DataPurpose, DataConsumer tags)
- Nav registration gated behind alphaPurposeBasedAccessControl flag

Query log config integration tab:
- Settings toggle panel on integration detail page (not CRUD table)
- Enable/disable switch with poll interval selector
- Inline Test connection and Poll now action buttons
- RTK Query slice for query log config CRUD + test + poll endpoints
- Tab registered for BigQuery and test_datastore (mock) integration types
- test_datastore connections always pass connection test (no secrets needed)

Infrastructure:
- 12 new OAuth scope enums (DATA_PURPOSE_*, DATA_CONSUMER_*, QUERY_LOG_SOURCE_*)
- 3 new cache tags (DataPurpose, DataConsumer, QueryLogConfig)
- IntegrationFeature.QUERY_LOGGING enum value
- test_datastore integration type info with QUERY_LOGGING feature
- Connection test always succeeds for test_datastore/test_website types

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Contributor

vercel bot commented Mar 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fides-plus-nightly Ready Ready Preview, Comment Mar 25, 2026 11:53pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
fides-privacy-center Ignored Ignored Mar 25, 2026 11:53pm

Request Review

Adds a new "Seed Data" page under the Developer nav (dev-only) that
lets users select and trigger seed scenarios via the seed API. Includes
RTK Query slice with status polling and cache tag invalidation mapped
per seed task. Currently supports the PBAC scenario.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Toggling the query log switch off now sends PUT {enabled: false}
instead of DELETE, preserving the config and its watermark so
re-enabling resumes from where it left off.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The form was requesting size=500 but the API enforces max 100,
causing a validation error and an empty dropdown.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adrian Galvan and others added 2 commits March 23, 2026 16:05
Remove seed data files from this PR so they can be submitted
as a standalone PR on top. Files moved:
- features/seed-data/SeedDataPanel.tsx
- features/seed-data/seed-data.slice.ts
- pages/poc/seed-data.tsx
- nav-config + routes entries for /poc/seed-data

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a Seed Data page under the Developer nav (dev-only) that lets
users select and trigger seed scenarios via the seed API. Includes
RTK Query slice with status polling and cache tag invalidation
mapped per seed task. Currently supports the PBAC scenario.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@galvana galvana changed the title feat: PBAC UI — data purposes, data consumers, and query log config ENG-3098: PBAC management UI — data purposes, consumers, query log config Mar 23, 2026
@galvana galvana marked this pull request as ready for review March 23, 2026 23:22
@galvana galvana requested review from a team as code owners March 23, 2026 23:22
@galvana galvana requested review from johnewart and removed request for a team March 23, 2026 23:22
Copy link
Contributor

@kruulik kruulik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving to unblock 👍

Copy link
Contributor

@kruulik kruulik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving to unblock

galvana and others added 2 commits March 25, 2026 14:49
Replace non-existent TrashCanOutlineIcon with Icons.TrashCan from fidesui,
matching the pattern used throughout the codebase. Add missing changelog
entry for PR #7700.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adrian Galvan and others added 2 commits March 25, 2026 15:08
Add missing blank line between third-party and local import groups
to satisfy simple-import-sort/imports rule.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adrian Galvan and others added 3 commits March 25, 2026 15:19
- Replace invalid "processing" Tag color with "info" in SeedDataPanel
- Simplify invalidatesTags to a static array (fixes RTK Query type error)
- Fix "Privacy Requests" -> "Request" (the actual registered tag type)
- Update dashboard_snapshot migration down_revision to c7e3a9b1d4f2
  to resolve Alembic multiple head revisions error

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This reverts commit 44b9e31, reversing
changes made to f0ed284.
Add required curly braces around single-line if bodies to satisfy
the curly and nonblock-statement-body-position lint rules.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove unnecessary React fragment wrapper around label text.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adrian Galvan and others added 2 commits March 25, 2026 16:04
FidesBase defines id with index=True, so the migration must create
ix_dashboard_snapshot_id to match the model.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add the dashboard_snapshot table to the fides db_dataset.yml
with system.operations annotations to satisfy fides_db_scan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@galvana galvana enabled auto-merge March 25, 2026 23:31
@galvana galvana added this pull request to the merge queue Mar 25, 2026
Merged via the queue into main with commit 56ff0df Mar 25, 2026
62 of 65 checks passed
@galvana galvana deleted the feat/pbac-ui-management branch March 25, 2026 23:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants